<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>

    <h1>首页</h1>

    <h3>HelloWorld</h3>
    <a th:href="@{/helloWorld}">HelloWorld</a><br/>

    <h3>测试@RequestMapping模糊匹配</h3>
    <a th:href="@{/animal/cat}">测试@RequestMapping模糊匹配[cat]</a><br/>
    <a th:href="@{/animal/dog}">测试@RequestMapping模糊匹配[dog]</a><br/>
    <a th:href="@{/animal/tiger}">测试@RequestMapping模糊匹配[tiger]</a><br/>
    <a th:href="@{/animal/tiger/big}">测试@RequestMapping模糊匹配[tiger/big]</a><br/>

    <h3>将@RequestMapping注解标记在类上</h3>
    <a th:href="@{/user/show/list}">[用户模块]Show List</a><br/>
    <a th:href="@{/user/pay}">[用户模块]Pay Money</a><br/>
    <a th:href="@{/user/alter/password}">[用户模块]Alter Password</a><br/>

    <h3>在@RequestMapping注解中区分请求方式</h3>
    <a th:href="@{/emp}">同地址的GET请求</a><br/>
    <form th:action="@{/emp}" method="post">
        <button type="submit">同地址的POST请求</button>
    </form>
    <br/>

    <h3>测试获取请求参数：一名一值</h3>
    <a th:href="@{/param/one/name/one/value(userName='tom')}">一个名字一个值</a><br/>

    <h3>测试获取请求参数：一名多值</h3>
    <form th:action="@{/param/one/name/multi/value}" method="post">
        请选择你最喜欢的球队：
        <input type="checkbox" name="team" value="Brazil"/>巴西
        <input type="checkbox" name="team" value="German"/>德国
        <input type="checkbox" name="team" value="French"/>法国
        <input type="checkbox" name="team" value="Holland"/>荷兰
        <input type="checkbox" name="team" value="Italian"/>意大利
        <input type="checkbox" name="team" value="China"/>中国
        <br/>
        <input type="submit" value="保存"/>
    </form>

    <h3>测试获取请求参数：表单对应模型</h3>
    <form th:action="@{/param/model}" method="post">
        姓名：<input type="text" name="empName"/><br/>
        年龄：<input type="text" name="empAge"/><br/>
        工资：<input type="text" name="empSalary"/><br/>
        <input type="submit" value="保存"/>
    </form>

    <h3>测试获取请求参数：表单对应的模型包含级联属性</h3>
    <form th:action="@{/param/cascad}" method="post">
        学生姓名：<input type="text" name="stuName" value="文章" /><br/>
        ★学校名称：<input type="text" name="school.schoolName" value="尚硅谷" /><br/>
        [★List]科目一：<input type="text" name="subjectList[0].subjectName" value="理论（List）" /><br/>
        [★List]科目二：<input type="text" name="subjectList[1].subjectName" value="倒车入库（List）" /><br/>
        [★List]科目三：<input type="text" name="subjectList[2].subjectName" value="坡道起步（List）" /><br/>

        [数组]科目一：<input type="text" name="subjectArray[0].subjectName" value="理论（数组）" /><br/>
        [数组]科目二：<input type="text" name="subjectArray[1].subjectName" value="倒车入库（数组）" /><br/>
        [数组]科目三：<input type="text" name="subjectArray[2].subjectName" value="坡道起步（数组）" /><br/>

        [Set]老师甲：<input type="text" name="teacherSet[0].teacherName" value="石松" /><br/>
        [Set]老师乙：<input type="text" name="teacherSet[1].teacherName" value="邱志伟" /><br/>
        [Set]老师丙：<input type="text" name="teacherSet[2].teacherName" value="朕" /><br/>

        [Map]语文成绩：<input type="text" name="scores['chinese']" value="90" /><br/>
        [Map]英语成绩：<input type="text" name="scores['english']" value="85" /><br/>
        [Map]数学成绩：<input type="text" name="scores['mathematics']" value="95" /><br/>

        <button type="submit">保存</button>
    </form>

    <h3>测试获取请求参数：发送 List 数据（简单类型）</h3>
    <form th:action="@{/param/list}" method="post">

        苹果：<input type="text" name="fruit" value="苹果" /><br/>
        香蕉：<input type="text" name="fruit" value="香蕉" /><br/>
        橘子：<input type="text" name="fruit" value="橘子" /><br/>

        <button type="submit">保存</button>

    </form>

    <h3>测试获取请求参数：发送 List 数据（复杂类型）</h3>
    直接发送 List&lt;Employee&gt;：<br/>
    <form th:action="@{/param/list/emp}" method="post">
        1号员工姓名：<input type="text" name="employeeList[0].empName" /><br/>
        1号员工年龄：<input type="text" name="employeeList[0].empAge" /><br/>
        1号员工工资：<input type="text" name="employeeList[0].empSalary" /><br/>
        2号员工姓名：<input type="text" name="employeeList[1].empName" /><br/>
        2号员工年龄：<input type="text" name="employeeList[1].empAge" /><br/>
        2号员工工资：<input type="text" name="employeeList[1].empSalary" /><br/>
        <button type="submit">保存</button>
    </form>

    <h3>获取请求消息头</h3>
    <a th:href="@{/obtain/request/header}">获取请求消息头</a><br/>
    <a th:href="@{/obtain/cookie/value}">获取 Cookie 值：JSESSIONID</a>

    <h3>SpringMVC 的跳转指令</h3>
    <a th:href="@{/dispatcher/command/forward}">测试 forward 指令</a><br/>
    <a th:href="@{/dispatcher/command/redirect}">测试 redirect 指令</a><br/>

    <h3>获取原生 Servlet API</h3>
    <a th:href="@{/original/servlet/api}">获取原生 Servlet API</a>

    <h3>测试请求域</h3>
    <a th:href="@{/attr/request/model}">通过 Model 存入数据</a><br/>
    <a th:href="@{/attr/request/model/map}">通过 ModelMap 存入数据</a><br/>
    <a th:href="@{/attr/request/map}">通过 Map 存入数据</a><br/>
    <a th:href="@{/attr/request/original}">通过原生 request 对象存入数据</a><br/>
    <a th:href="@{'/attr/request/model/and/view'}">通过 ModelAndView 存入数据</a><br/>

    <h3>测试会话域和应用域</h3>
    <a th:href="@{/attr/session}">测试会话域</a><br/>
    <a th:href="@{/attr/application}">测试应用域</a><br/>

    <h3>测试view-controller</h3>
    <a th:href="@{/test/view/controller}">测试view-controller</a><br/>
</body>
</html>